/**
 * 模板管理相关类型定义
 */

/** 模板类型枚举 */
export enum TemplateType {
  BACKEND = "BACKEND",
  FRONTEND = "FRONTEND",
  FULLSTACK = "FULLSTACK",
  API = "API",
  MICROSERVICE = "MICROSERVICE"
}

/** 模板统计信息 */
export interface TemplateStatistics {
  /** 今日下载量 */
  todayDownloads: number
  /** 本周下载量 */
  weekDownloads: number
  /** 本月下载量 */
  monthDownloads: number
  /** 使用项目数 */
  projectCount: number
  /** 活跃用户数 */
  activeUsers: number
  /** 最新版本 */
  latestVersion: string
  /** 更新频率 */
  updateFrequency: string
}

/** 模板信息 */
export interface TemplateVO {
  /** 模板ID */
  templateId: number
  /** 模板名称 */
  templateName: string
  /** 模板编码 */
  templateCode: string
  /** 模板描述 */
  description: string
  /** 模板类型 */
  templateType: TemplateType
  /** 技术栈 */
  techStack: string
  /** 适用场景 */
  useCase: string
  /** 模板版本 */
  version: string
  /** 作者 */
  author: string
  /** 许可证 */
  license: string
  /** 官网地址 */
  homepage: string
  /** Git仓库地址 */
  repositoryUrl: string
  /** 演示地址 */
  demoUrl: string
  /** 文档地址 */
  documentUrl: string
  /** 封面图片 */
  coverImage: string
  /** 截图列表 */
  screenshots: string[]
  /** 标签列表 */
  tags: string[]
  /** 是否启用 */
  isEnabled: boolean
  /** 是否推荐 */
  isRecommended: boolean
  /** 排序 */
  sortOrder: number
  /** 下载次数 */
  downloadCount: number
  /** 评分 */
  rating: number
  /** 评价数量 */
  reviewCount: number
  /** 创建者ID */
  creatorId: number
  /** 创建者名称 */
  creatorName: string
  /** 创建时间 */
  createTime: string
  /** 更新时间 */
  updateTime: string
  /** 最后下载时间 */
  lastDownloadTime: string
  /** 模板配置 */
  templateConfig: Record<string, any>
  /** 依赖配置 */
  dependencies: Record<string, any>
  /** 特性列表 */
  features: Record<string, any>
  /** 模板统计信息 */
  statistics: TemplateStatistics
}

/** 模板请求参数 */
export interface TemplateRequest {
  /** 模板ID（更新时必填） */
  templateId?: number
  /** 模板名称 */
  templateName: string
  /** 模板编码 */
  templateCode: string
  /** 模板描述 */
  description?: string
  /** 模板类型 */
  templateType: TemplateType
  /** 技术栈 */
  techStack: string
  /** 适用场景 */
  useCase?: string
  /** 模板版本 */
  version?: string
  /** 作者 */
  author?: string
  /** 许可证 */
  license?: string
  /** 官网地址 */
  homepage?: string
  /** Git仓库地址 */
  repositoryUrl?: string
  /** 演示地址 */
  demoUrl?: string
  /** 文档地址 */
  documentUrl?: string
  /** 封面图片 */
  coverImage?: string
  /** 截图列表 */
  screenshots?: string
  /** 标签 */
  tags?: string
  /** 是否启用 */
  isEnabled: boolean
  /** 是否推荐 */
  isRecommended?: boolean
  /** 排序 */
  sortOrder?: number
  /** 下载次数 */
  downloadCount?: number
  /** 评分 */
  rating?: number
  /** 模板配置（JSON格式） */
  templateConfig?: Record<string, any>
  /** 依赖配置（JSON格式） */
  dependencies?: Record<string, any>
  /** 特性列表（JSON格式） */
  features?: Record<string, any>
}

/** 模板查询参数 */
export interface TemplatePageQuery {
  /** 模板类型 */
  templateType?: TemplateType
  /** 技术栈 */
  techStack?: string
  /** 标签 */
  tags?: string
  /** 是否推荐 */
  isRecommended?: boolean
  /** 当前页 */
  current?: number
  /** 每页大小 */
  size?: number
}

/** 模板搜索参数 */
export interface TemplateSearchQuery {
  /** 关键词 */
  keyword: string
  /** 模板类型 */
  templateType?: TemplateType
  /** 当前页 */
  current?: number
  /** 每页大小 */
  size?: number
}

/** 模板下载统计查询参数 */
export interface TemplateDownloadStatsQuery {
  /** 模板ID */
  templateId: number
  /** 统计天数 */
  days?: number
}
